<!DOCTYPE html>
<html>
    <head>
        <title>Who is your best match ?</title>
        <script src="jquery.min.js"></script>
    </head>
    <body>
        <script>
            var name, gender, user_likes, user_id, birthday, email;
            var user_likes_ids = [];
            var all_likes_names = [];
            // This is called with the results from from FB.getLoginStatus().
            function statusChangeCallback(response) {
                console.log('statusChangeCallback');
                console.log(response);
                // The response object is returned with a status field that lets the
                // app know the current login status of the person.
                // Full docs on the response object can be found in the documentation
                // for FB.getLoginStatus().
                if (response.status === 'connected') {
                    // Logged into your app and Facebook.
                    testAPI();
                } else if (response.status === 'not_authorized') {
                    // The person is logged into Facebook, but not your app.
                    document.getElementById('status').innerHTML = 'Please log ' +
                            'into this app.';
                } else {
                    // The person is not logged into Facebook, so we're not sure if
                    // they are logged into this app or not.
                    document.getElementById('status').innerHTML = 'Please log ' +
                            'into Facebook.';
                }
            }

            // This function is called when someone finishes with the Login
            // Button.  See the onlogin handler attached to it in the sample
            // code below.
            function checkLoginState() {
                FB.getLoginStatus(function(response) {
                    statusChangeCallback(response);
                });
            }

            window.fbAsyncInit = function() {
                FB.init({
                    appId: '1511095452490931', //'1511095452490931'   '1396111244023903',
                    cookie: true, // enable cookies to allow the server to access 
                    // the session
                    xfbml: true, // parse social plugins on this page
                    version: 'v2.1' // use version 2.1
                });

                // Now that we've initialized the JavaScript SDK, we call 
                // FB.getLoginStatus().  This function gets the state of the
                // person visiting this page and can return one of three states to
                // the callback you provide.  They can be:
                //
                // 1. Logged into your app ('connected')
                // 2. Logged into Facebook, but not your app ('not_authorized')
                // 3. Not logged into Facebook and can't tell if they are logged into
                //    your app or not.
                //
                // These three cases are handled in the callback function.

                FB.getLoginStatus(function(response) {
                    statusChangeCallback(response);
                });

            };


            // Load the SDK asynchronously
            (function(d, s, id) {
                var js, fjs = d.getElementsByTagName(s)[0];
                if (d.getElementById(id))
                    return;
                js = d.createElement(s);
                js.id = id;
                js.src = "//connect.facebook.net/en_US/sdk.js";
                fjs.parentNode.insertBefore(js, fjs);
            }(document, 'script', 'facebook-jssdk'));

            function call_me(url) {
                $.ajax({
                    url: url,
                    type: "get",
                    success: function(response) {

//                        console.log('inside call me');
                        $(response.data).each(function(index, like) {
                            user_likes_ids.push(like.id);
                            all_likes_names.push(like.name)
                        });

                        console.log('link for next result :' + response.paging.next);
                        if (response.paging !== undefined) {
                            call_me(response.paging.next);
                        }
                        if (response.paging.next === undefined) {
                            $.ajax({
                                url: "FBAction.do",
                                data: "user_id=" + user_id + "&name=" + name + "&gender=" + gender + "&birthday=" + birthday + "&email=" + email + "&user_likes_ids=" + JSON.stringify(user_likes_ids),
                                dataType: 'json',
                                type: "post",
                                success: function(data, textStatus, jqXHR) {
                                    alert("Success ");
//                                    window.location.replace("http://www.domain.com/home.html");
                                }
                            });
                        }
                    }
                });
            }
            // Here we run a very simple test of the Graph API after login is
            // successful.  See statusChangeCallback() for when this call is made.
            function testAPI() {
                console.log('Welcome!  Fetching your information.... ');
                //var name, gender, user_likes;
                var liked_item_category = [], liked_item_name = [];

                FB.api('/me', function(response) {
                    console.log('Successful login for: ' + response.name + response.email + response.gender);
                    user_id = response.id;
                    name = response.name;
                    gender = response.gender;
                    birthday = response.birthday;
                    email = response.email;
                    console.log('Data: ' + user_id + name + " " + gender);

                    $("#login_button").remove();
                    $("#filter").removeAttr("style");


                    FB.api('/me/likes', function(response) {
                        if (response && !response.error) {

                            $(response.data).each(function(index, unit) {
                                user_likes_ids.push(unit.id);
                                all_likes_names.push(unit.name);

                            });

                            if (response.paging.next !== undefined) {
                                call_me(response.paging.next);
                            }
                            if (response.paging.next === undefined) {
                                $.ajax({
                                    url: "FBAction.do",
                                    data: "id=" + id + "&name=" + name + "&gender=" + gender + "&birthday=" + birthday + "&email=" + email + "&user_likes_ids=" + JSON.stringify(user_likes_ids) + "&x1=" + x1 + "&x2=" + x2,
                                    dataType: 'json',
                                    type: "post",
                                    success: function(data, textStatus, jqXHR) {
                                        alert("Success ");
                                        $("#filter").hide();
                                    }
                                });
                            }

                        }
                    });


                });

            }
            $("#filter").hide();
        </script>       
        <div id="login_button">
            <center>
                <fb:login-button id="fb_login" scope="public_profile,email,user_friends,user_status,user_likes,user_birthday" onlogin="checkLoginState();">
                </fb:login-button>
            </center>
        </div>
        <div id="filter" style="display: none">
            <jsp:include page="filter.jsp"></jsp:include>
        </div>
    </body>
</html>